﻿using Common.Contract.ProductHandbook.Request;
using Common.Contract.ProductHandbook.Response;
using System.ServiceModel;

namespace Common.Contract.ProductHandbook
{
    [ServiceContract]
    public interface IProductHandbook
    {
        #region Product handbook
        [OperationContract]
        RetrieveProductHandbookCategoryResponse RetrieveProductHandbookCategory(RetrieveProductHandbookCategoryRequest request);
        [OperationContract]
        RetrieveProductHandbookCategoryResponse RetrieveProductProgramHandbookCategory(RetrieveProductHandbookCategoryRequest request);
        [OperationContract]
        RetrieveProductHandbookProductDetailByProductIdResponse RetrieveProductHandbookProductDetailByProductId(RetrieveProductHandbookProductDetailByProductIdRequest request);
        [OperationContract]
        ResponseRecord UpdateProductHandbookProductDetail(UpdateProductHandbookProductDetailRequest request);
        [OperationContract]
        ResponseRecord AddProductInfo(AddProductInfoRequest request);
        #endregion
        #region Checklist
        [OperationContract]
        RetrieveChecklistDocumentByProductResponse RetrieveChecklistDocumentByProduct(RetrieveChecklistDocumentByProductRequest request);
        [OperationContract]
        RetrieveViewChecklistCustomerByCcidResponse RetrieveViewChecklistCustomerByCcid(RetrieveViewChecklistCustomerByCcidRequest request);
        [OperationContract]
        RetrieveChecklistQuestionByProductResponse RetrieveChecklistQuestionByProduct(RetrieveChecklistQuestionByProductRequest request);
        [OperationContract]
        RetrieveChecklistCustomerByDaoResponse RetrieveChecklistCustomerByDao(RetrieveChecklistCustomerByDaoRequest request);
        [OperationContract]
        ResponseRecord UpdateCustomerChecklist(UpdateCustomerChecklistRequest request);
        [OperationContract]
        RetrieveChecklistCustomerByCcidResponse RetrieveChecklistCustomerByCcid(RetrieveChecklistCustomerByCcidRequest request);
        [OperationContract]
        ResponseRecord UpdateQuestion(UpdateChecklistQuestionRequest request);
        [OperationContract]
        ResponseRecord UpdateDocument(UpdateDocumentChecklistRequest request);
        [OperationContract]
        ResponseRecord UpdateChecklistRule(UpdateChecklistRuleRequest request);
        [OperationContract]
        ResponseRecord UpdateChecklistRuleHideDoc(UpdateChecklistRuleHideDocRequest request);
        [OperationContract]
        RetrieveChecklistProductInfoResponse RetrieveChecklistProductInfo(RetrieveChecklistProductInfoRequest request);
        [OperationContract]
        RetrieveDocumentInfoByDocIdResponse RetrieveDocumentInfoByDocId(RetrieveDocumentInfoByDocIdRequest request);
        [OperationContract]
        RetrieveChecklistRulesByProductResponse RetrieveChecklistRulesByProduct(RetrieveChecklistRulesByProductRequest request);
        [OperationContract]
        RetrieveChecklistHideDocResponse RetrieveChecklistHideDocByProduct(RetrieveChecklistHideDocRequest request);
        [OperationContract]
        RetrieveRuleChecklistByIdResponse RetrieveRuleChecklistById(RetrieveRuleChecklistByIdRequest request);
        [OperationContract]
        RetrieveRuleHideDocByIdResponse RetrieveRuleHideDocById(RetrieveRuleHideDocByIdRequest request);
        [OperationContract]
        ResponseRecord AddProductChecklistInfo(AddProductInfoRequest request);
        #endregion
        #region Sale contest handbook
        [OperationContract]
        RetrieveSaleContestProgramResponse RetrieveSaleContestProgram(RetrieveSaleContestProgramRequest request);
        [OperationContract]
        RetrieveSaleContestInfoBySaleContestIdResponse RetrieveSaleContestInfoBySaleContestId(RetrieveSaleContestInfoBySaleContestIdRequest request);
        #endregion
    }
}
